/**
 122. 买卖股票的最佳时机 II

给你一个整数数组 prices ，其中 prices[i] 表示某支股票第 i 天的价格。
在每一天，你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买，然后在 同一天 出售。
返回 你能获得的 最大 利润 。
 */
struct Solution {}

impl Solution {
    pub fn max_profit(prices: Vec<i32>) -> i32 {
        let mut res = 0;
        let mut is_up = 0;
        let mut buy = 0;
        let len = prices.len();
        for i in 1..len {
            let cur_item = prices[i];
            let last_item = prices[i - 1];
            if cur_item - last_item > 0 {
                // 今日上涨，买入昨天的
                if is_up != 1 {
                    buy = last_item;
                }
                is_up = 1;
            } else if cur_item - last_item < 0 {
                // 今日下跌，卖出昨天的
                if is_up != -1 && is_up != 0 {
                    res += last_item - buy;
                }
                is_up = -1;
            }
            // 最后一天卖掉。
            if i == (len - 1) && is_up == 1 {
                res += cur_item - buy;
            }
        }
        res
    }
}

pub fn main() {
    let prices = vec![1, 9, 6, 9, 1, 7, 1, 1, 5, 9, 9, 9];
    let res = Solution::max_profit(prices);
    println!("==> {}", res);
}
